package client;
import common.*;

/**
 * Classe dedicata alla connessione tramite protocollo socket. Essa si preoccupa di creare le stringhe da mandare al server e di crearre un thread apposito lanciando in esecuzione Client_listener, facendo in modo che il client resti sempre in ascolto sui messaggi lanciati dal server.
 */
public class Client_socket implements Client{
	
	private C_GSessioneGioco sg;
	private Client_listener al;
	
	/**
	 * Costruttore di classe: istanzia l'interfaccia grafica e avvia il thread dedicato all'ascolto sui messaggi del server.
	 */
	public Client_socket(){
		this.sg = new C_GSessioneGioco(this);
		this.al = new Client_listener(this, sg);
		al.start();
	}

	@Override
	public void creaUtente(String usr, String pass){
		String mess;
		
		mess = "@creaUtente,user=" + usr + ",pass=" + pass;
		al.invio(mess, 0);
	}

	@Override
	public void login(String usr, String pass){
		String mess;
		
		mess = "@login,user=" + usr + ",pass=" + pass;
		al.invio(mess, 1);
	}

	@Override
	public void creaRazza(int tok,String nome,String ti) {
		String mess;
		if (ti.equals("C"))
			ti="c";
		else
			ti="e";
		mess = "@creaRazza,token=" + tok + ",nome=" + nome + ",tipo=" + ti;
		al.invio(mess, 2);
	}

	@Override
	public void accessoPartita(int tok) {
		String mess;
		
		mess = "@accessoPartita,token=" + tok;
		al.invio(mess, 3);
	}

	@Override
	public void uscitaPartita(int tok) {
		String mess;
		
		mess = "@uscitaPartita,token=" + tok;
		al.invio(mess, 4);
	}

	@Override
	public void listaGiocatori(int tok) {
		String mess;
		
		mess = "@listaGiocatori,token=" + tok;
		al.invio(mess, 99);
	}

	@Override
	public void classifica(int tok) {
		String mess;
		
		mess = "@classifica,token=" + tok;
		al.invio(mess, 99);
	}

	@Override
	public void logout(int tok){
		String mess;
		
		mess = "@logout,token=" + tok;
		al.invio(mess, 5);
	}

	@Override
	public void mappaGenerale(int tok){
		String mess;
		
		mess = "@mappaGenerale,token=" + tok;
		al.invio(mess, 99);
	}

	@Override
	public void listaDinosauri(int tok) {
		String mess;
		
		mess = "@listaDinosauri,token=" + tok;
		al.invio(mess, 99);
	}

	@Override
	public void vistaLocale(int tok, String id) {
		String mess;
		
		mess = "@vistaLocale,token=" + tok + ",idDino=" + id;
		al.invio(mess, 99);
	}

	@Override
	public void statoDinosauro(int tok, String id) {
		String mess;
		
		mess = "@statoDinosauro,token=" + tok + ",idDino=" + id;
		al.invio(mess, 99);
	}

	@Override
	public void muoviDinosauro(int tok, String id, int x, int y) {
		String mess;
		
		mess = "@muoviDinosauro,token=" + tok + ",idDino=" + id + ",dest={" + x + "," + y + "}";
		al.invio(mess, 6);
	}

	@Override
	public void cresciDinosauro(int tok, String id) {
		String mess;
		
		mess = "@cresciDinosauro,token=" + tok + ",idDino=" + id;
		al.invio(mess, 7);
	}

	@Override
	public void deponiUovo(int tok, String id) {
		String mess;
		
		mess = "@deponiUovo,token=" + tok + ",idDino=" + id;
		al.invio(mess, 8);
	}

	@Override
	public void confermaTurno(int tok) {
		String mess;
		
		mess = "@confermaTurno,token=" + tok;
		al.invio(mess, 9);
	}

	@Override
	public void passaTurno(int tok) {
		String mess;
		
		mess = "@passaTurno,token=" + tok;
		al.invio(mess, 10);
	}

}